Release 10.1A: OpenEdge Development:
Debugging and Troubleshooting


Variables pane

The variables pane provides access to the variables associated with the current procedure. The Debugger organizes and displays variable data on tabs named for the following categories:

Select a tab to display all variables in that category. Each tab in the variables pane has a context (right-click) menu containing the following options: Copy, Cut, Paste, Dataview (displays attribute or field information for the selected variable in the Dataview dialog box), and Add Watch (adds the selected variable to the watches pane). For more information, see the "Dataview dialog box" section and the "Add Watch dialog box" section.

Double-clicking on a cell containing the value of a variable makes the value editable. You can modify the value by entering a different value and pressing the ENTER key or clicking out of the cell. Pressing the ESC key when editing a value restores the current value and cancels the editing operation.

The Debugger displays raw (unformatted) variable data. For example, a decimal value of 1,234.56 appears as 1234.56; 1.00 appears as 1. Do not use formatting characters when entering variable values. Dynamic temp-table and dataset-related objects appear in the variables tab as handle variables.

Viewing Arrays

Array parameters and array variables can appear on the respective tab in the variables pane. The Debugger displays the name of the array, the number of extents (in brackets), and the data type (for example, DaysInMonth [12] INTEGER). You can view the value of an array element as a watch (DaysInMonth[3]) or view the entire contents of the array in the Array tab of the Dataview dialog box.

If an array has an indeterminate extent (that is, it was declared as EXTENT with no limiting exp), the Debugger displays the current value of the EXTENT function for the array. Before the array’s size is determined, the extent of the array is unknown, so the Debugger displays [?] in the Value column for the variable or parameter. When the array is populated or received as a parameter from an array with a known size, the extent is set. For example, if a calling procedure declares the array as EXTENT 5 and passes it to a procedure where the array was declared to have an indeterminate extent, the receiving array is set to an extent of 5, once the procedure is called. At this point, the Debugger displays [5] as the value, and there is no indication the array originally was declared as having an indeterminate extent.

Viewing objects of data type BLOB

4GL programmers use the BLOB data type to store arbitrary binary data. A BLOB is similar to a MEMPTR, and the Debugger handles BLOBs in much the same way as MEMPTRs. Specifically, the Debugger displays the total length of the BLOB in parentheses, followed by the first 256 bytes (or fewer, if the BLOB is smaller than 256 bytes) of the BLOB in hexadecimal, followed by an ellipsis indicating there is more data that is not shown, if the BLOB contains more than 256 bytes. For example:

(133496) 64 42 74 65 0A 69 20 6D 20 64 75 65 2C 65 21 0D ... 

You cannot edit BLOB values; the Value cell is read-only.

Due to its small size, the Value cell shows only a small part of the BLOB data. To see the full 256 bytes of BLOB data, view the BLOB in the Value tab of the Dataview dialog box.

Viewing objects of data types CLOB and LONGCHAR

4GL programmers use CLOB and LONGCHAR data types to store large amounts of text data. The Debugger displays the total length of the CLOB or LONGCHAR in parentheses, followed by the first 256 characters (or fewer, if the CLOB or LONGCHAR is smaller than 256 characters) of the CLOB or LONGCHAR as a quoted string, followed by an ellipsis indicating there is more data that is not shown, if the CLOB or LONGCHAR contains more than 256 characters.

You cannot edit CLOB and LONGCHAR values; the Value cell is read-only.

Due to its small size, the Value cell shows only a small part of CLOB and LONGCHAR data. To see the full 256 characters of data, view the CLOB or LONGCHAR in the Value tab of the Dataview dialog box.

Viewing objects of data type DATETIME

The DATETIME data type is a timestamp consisting of a date (same as the 4GL DATE data type) and a time (since midnight). The DATETIME-TZ data type extends this, by including time zone information. The Debugger displays values of either type anywhere they are used: program variables, parameters, buffer fields, and watches. You can assign a new value to a DATETIME or DATETIME-TZ object by editing its value. The Debugger shows unformatted data; for example, it displays the milliseconds portion of a DATETIME or DATETIME-TZ field, even if the field's format does not include milliseconds.

The Debugger displays DATETIME and DATETIME-TZ fields in OpenEdge’s current SESSION:DATE-FORMAT setting (dmy, mdy, ydm, or ymd) and interprets assignments the same way. That is, to assign a DATETIME or DATETIME-TZ field in the Debugger, use the format dictated by OpenEdge’s DATE-FORMAT setting.

Viewing objects of datatype Progress.Lang.ProObject

The Progress.Lang.ProObject datatype is a built-in class definition that provides a common set of methods for an object. The Debugger displays an integer value for the reference followed by the name of the class the variable references. For example “1101 (Class MyClass)”.

Viewing data members of a class

The data members of a class may be PUBLIC, PRIVATE (the default), or PROTECTED. PUBLIC and PROTECTED members are accessible from both the superclass and subclasses. The Debugger displays PUBLIC and PROTECTED members in the Variables pane for both the superclass and subclasses. PRIVATE members appear only in the class that defines them.

Note: PRIVATE members only appear when the class is the current execution frame on the 4GL stack. PUBLIC and PROTECTED members appear from any execution frame that references them.

Viewing ProDataSet objects

The ProDataSet object is a collection of temp-table buffer objects and relations among the temp-table objects. A ProDataSet consists of three object types—DATASET, DATA-RELATION, and DATA-SOURCE—each with several attributes and methods. The Datasets tab contains the names of all static ProDataSet-related objects declared in the current procedure context. You can right-click on any listed object and select Dataview from the pop-up menu, to see the object’s attributes.


Copyright © 2005 Progress Software Corporation
www.progress.com
Voice: (781) 280-4000
Fax: (781) 280-4095